{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Starting comments\n",
    "Charles Le Losq, Geophysical Laboratory, Carnegie Institution for Science. 7 April 2015.\n",
    "\n",
    "This IPython notebook is aimed to show how you can easily fit a Raman spectrum with Python tools, for free and, in my opinion, in an elegant way.\n",
    "\n",
    "This fitting procedure is much less \"black-box\" than existing GUI softwares. It probably is a little bit harder to learn for the newcomer, but rewards are much greater since you can control all the procedure in every single detail.\n",
    "\n",
    "In this example, we will fit the 850-1300 cm$^{-1}$ portion of a Raman spectrum of a lithium tetrasilicate glass Li$_2$Si$_4$O$_9$, the name will be abbreviated LS4 in the following. \n",
    "\n",
    "For further references for fitting Raman spectra of glasses, please see for instance: Virgo et al., 1980, Science 208, p 1371-1373; Mysen et al., 1982, American Mineralogist 67, p 686-695; McMillan, 1984, American Mineralogist 69, p 622-644; Mysen, 1990, American Mineralogist 75, p 120-134; Le Losq et al., 2014, Geochimica et Cosmochimica Acta 126, p 495-517 and Neuville et al., 2014, Reviews in Mineralogy and Geochemistry 78.\n",
    "\n",
    "We will use the optimization algorithms of Scipy together with the library lmfit (http://lmfit.github.io/lmfit-py/) that is extremely useful to add constrains to the fitting procedure."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Importing libraries\n",
    "So the first part will be to import a bunch of libraries for doing various things"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "%matplotlib inline\n",
    "import time\n",
    "\n",
    "import numpy as np # For data manipulation\n",
    "import scipy # For data manipulation\n",
    "import random\n",
    "import matplotlib.pyplot as plt # For doing the plots"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We need in particular the library lmfit created and maintained by Matt Newville, CARS, University of Chicago, and available at http://lmfit.github.io/lmfit-py/. See the documentation on the website for installing and using this one."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "import lmfit\n",
    "from lmfit.models import GaussianModel"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "And we import rampy (as rp)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "import rampy as rp #Charles' libraries and functions"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Importing and looking at the data\n",
    "Let's first have a look at the spectrum"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0.5,1,'Fig. 1: the raw data')"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1146d6358>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# get the spectrum to deconvolute, with skipping header and footer comment lines from the spectrometer\n",
    "inputsp = np.genfromtxt(\"./data/LS4.txt\",skip_header=20, skip_footer=43) \n",
    "\n",
    "# create a new plot for showing the spectrum\n",
    "plt.figure(figsize=(5,5))\n",
    "plt.plot(inputsp[:,0],inputsp[:,1],'k.',markersize=1)\n",
    "plt.xlabel(\"Raman shift, cm$^{-1}$\", fontsize = 12)\n",
    "plt.ylabel(\"Normalized intensity, a. u.\", fontsize = 12)\n",
    "plt.title(\"Fig. 1: the raw data\",fontsize = 12,fontweight=\"bold\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We are interested in fitting the 870-1300 cm$^{-1}$ portion of this spectrum, which can be assigned to the various symmetric and assymetric stretching vibrations of Si-O bonds in the SiO$_2$ tetrahedra present in the glass network (see the above cited litterature for details).\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Baseline Removal\n",
    "\n",
    "First thing we notice in Fig. 1, we have to remove a baseline because this spectrum is shifted from 0 by some \"background\" scattering. For that, we can use the rp.baseline() function"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [],
   "source": [
    "bir = np.array([(860,874),(1300,1330)]) # The regions where the baseline will be fitted\n",
    "y_corr, y_base = rp.baseline(inputsp[:,0],inputsp[:,1],bir,'poly',polynomial_order=3)# We fit a polynomial background."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now we will do some manipulation to have the interested portion of spectrum in a single variable. We will assume that the errors have not been drastically affected by the correction process (in some case it can be, but this one is quite straightforward), such that we will use the initial relative errors stored in the \"ese0\" variable."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [],
   "source": [
    "# signal selection\n",
    "lb = 867 # The lower boundary of interest\n",
    "hb = 1300 # The upper boundary of interest\n",
    "x = inputsp[:,0]\n",
    "x_fit = x[np.where((x > lb)&(x < hb))]\n",
    "y_fit = y_corr[np.where((x > lb)&(x < hb))]\n",
    "ese0 = np.sqrt(abs(y_fit[:,0]))/abs(y_fit[:,0]) # the relative errors after baseline subtraction\n",
    "y_fit[:,0] = y_fit[:,0]/np.amax(y_fit[:,0])*10 # normalise spectra to maximum intensity, easier to handle \n",
    "sigma = abs(ese0*y_fit[:,0]) #calculate good ese"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "And let's plot the portion of interest before and after baseline subtraction:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0.5,0.98,'Figure 2')"
      ]
     },
     "execution_count": 43,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x115878f60>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# create a new plot for showing the spectrum\n",
    "plt.figure()\n",
    "plt.subplot(1,2,1)\n",
    "inp = plt.plot(x,inputsp[:,1],'k-',label='Original')\n",
    "corr = plt.plot(x,y_corr,'b-',label='Corrected') #we use the sample variable because it is not already normalized...\n",
    "bas = plt.plot(x,y_base,'r-',label='Baseline')\n",
    "plt.xlim(lb,1300)\n",
    "plt.ylim(0,40000)\n",
    "plt.xlabel(\"Raman shift, cm$^{-1}$\", fontsize = 14)\n",
    "plt.ylabel(\"Normalized intensity, a. u.\", fontsize = 14)\n",
    "plt.legend()\n",
    "plt.title('A) Baseline removal')\n",
    "\n",
    "plt.subplot(1,2,2)\n",
    "plt.plot(x_fit,y_fit,'k.')\n",
    "plt.xlabel(\"Raman shift, cm$^{-1}$\", fontsize = 14)\n",
    "plt.title('B) signal to fit')\n",
    "#plt.tight_layout()\n",
    "plt.suptitle('Figure 2', fontsize = 14,fontweight = 'bold')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Last steps before fitting the spectrum\n",
    "\n",
    "So here we are. We have the corrected spectrum in the sample variable. \n",
    "\n",
    "But before going further away,we need to write a function for the optimisation. It will return the difference between the calculated and measured spectrum, following the guideline provived by lmfit (http://lmfit.github.io/lmfit-py/) Please note that I do the fitting this way because it gives a pretty good control of the entire process, but you can use directly the builtin models of lmfit (http://lmfit.github.io/lmfit-py/builtin_models.html) for fitting the spectrum. Doing so, your code will be different from this one and you don't need to define a residual function. In such case, you want to look at the example 3 on the page http://lmfit.github.io/lmfit-py/builtin_models.html. But let's just pretend we want to write our own piece of code and use the Gaussian function implemented in Rampy.\n",
    "\n",
    "The shape of the spectrum suggests that at least three peaks are present, because of the two obvious bands near 950 and 1080 cm$^{-1}$ and a slope break near 1200 cm $^{-1}$. From previous works, we actually know that we have two additional peaks (See Mysen, 1990 or Le Losq et al., 2014) in this spectral region located near 1050 and 1150 cm$^{-1}$. So we have to fit 5 peaks, and hence, we have 5 intensities variables a1 to a5, 5 frequencies f1 to f5, and 5 half width at half peak maximum l1 to l5. This makes a total of 15 parameters. Those variables will be stored in the Parameters() object created by the lmfit software (see http://lmfit.github.io/lmfit-py/parameters.html), we will go back on this one latter. For now, let just say that the Parameters() object is called \"pars\" and contains the various a1-a5, f1-f5 and l1-l5 parameters, such that we can have their values with using a1 = pars['a1'].value for instance.\n",
    "\n",
    "So let's go. We create the function \"residual\" with arguments pars (the Parameters() object), the x axis, and, in option, the y axis as data and the errors."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [],
   "source": [
    "def residual(pars, x, data=None, eps=None): #Function definition\n",
    "    # unpack parameters, extract .value attribute for each parameter\n",
    "    a1 = pars['a1'].value\n",
    "    a2 = pars['a2'].value\n",
    "    a3 = pars['a3'].value\n",
    "    a4 = pars['a4'].value\n",
    "    a5 = pars['a5'].value\n",
    "    \n",
    "    f1 = pars['f1'].value\n",
    "    f2 = pars['f2'].value\n",
    "    f3 = pars['f3'].value\n",
    "    f4 = pars['f4'].value\n",
    "    f5 = pars['f5'].value \n",
    "    \n",
    "    l1 = pars['l1'].value\n",
    "    l2 = pars['l2'].value\n",
    "    l3 = pars['l3'].value\n",
    "    l4 = pars['l4'].value\n",
    "    l5 = pars['l5'].value\n",
    "    \n",
    "    # Using the Gaussian model function from rampy\n",
    "    peak1 = rp.gaussian(x,a1,f1,l1)\n",
    "    peak2 = rp.gaussian(x,a2,f2,l2)\n",
    "    peak3 = rp.gaussian(x,a3,f3,l3)\n",
    "    peak4 = rp.gaussian(x,a4,f4,l4)\n",
    "    peak5 = rp.gaussian(x,a5,f5,l5)\n",
    "    \n",
    "    model = peak1 + peak2 + peak3 + peak4 + peak5 # The global model is the sum of the Gaussian peaks\n",
    "    \n",
    "    if data is None: # if we don't have data, the function only returns the direct calculation\n",
    "        return model, peak1, peak2, peak3, peak4, peak5\n",
    "    if eps is None: # without errors, no ponderation\n",
    "        return (model - data)\n",
    "    return (model - data)/eps # with errors, the difference is ponderated"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Note that in the above function, I did not applied the square to (model - data). This is implicitely done by lmfit (see http://lmfit.github.io/lmfit-py/fitting.html#fit-func-label for further information on function writting).\n",
    "\n",
    "# Fitting\n",
    "\n",
    "Ok, we have our optimisation function. So we can go forward and fit the spectrum... \n",
    "\n",
    "We need five Guassians at 950, 1050, 1100, 1150 and 1200 cm$^{-1}$. We set their half-width at half-maximum at the same value."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [],
   "source": [
    "params = lmfit.Parameters()\n",
    "#               (Name,  Value,  Vary,   Min,  Max,  Expr)\n",
    "params.add_many(('a1',   2.4,   True,  0,      None,  None),\n",
    "                ('f1',   946,   True, 910,    970,  None),\n",
    "                ('l1',   26,   True,  20,      50,  None),\n",
    "                ('a2',   3.5,   True,  0,      None,  None),\n",
    "                ('f2',   1026,  True, 990,   1070,  None),\n",
    "                ('l2',   39,   True,  20,   55,  None),  \n",
    "                ('a3',   8.5,    True,    7,      None,  None),\n",
    "                ('f3',   1082,  True, 1070,   1110,  None),\n",
    "                ('l3',   31,   True,  25,   35,  None),  \n",
    "                ('a4',   2.2,   True,  0,      None,  None),\n",
    "                ('f4',   1140,  True, 1110,    1160,  None),\n",
    "                ('l4',   35,   True,  20,   50,  None),  \n",
    "                ('a5',   2.,   True,  0,      None,  None),\n",
    "                ('f5',   1211,  True, 1180,   1220,  None),\n",
    "                ('l5',   28,   True,  20,   45,  None))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "For further details on the Parameters() object, I invite you to look at this page: http://lmfit.github.io/lmfit-py/parameters.html . But from the above piece of code, you can already guess that you can make specific parameters that vary or not, you can fixe Min or Max values, and you can even put some contrains between parameters (e.g., \"l1 = l2') using the last \"Expr\" column.\n",
    "\n",
    "You can remark that we applied some boundaries for the peak positions, but also for peak widths. This is based on previous fits made for this kind of compositions. Typically, in such glass, peaks from Si-O stretch vibrations do not present half-width greater than 50 cm$^{-1}$ or smaller than 20 cm$^{-1}$. For instance, the 1080 cm$^{-1}$ peak typically present a half-width of ~ 30 cm$^{-1}$ ± 5 cm$^{-1}$ in silica-rich silicate glasses, such that we can apply a tighter constrain there. Following such ideas, I put bonds for the parameter values for the half-width of the peaks. This avoid fitting divergence. Furthermore, we know approximately the frequencies of the peaks, such that we can also apply bondaries for them. This will help the fitting, since in this problem, we have five peaks in a broad envelop that only present two significant features at ~950, ~1080 cm$^{-1}$ as well as two barely visible shoulders near 1050 and 1200 cm$^{-1}$. But this is a simple case. For some more complex (aluminosilicate) glasses, this 850-1300 cm$^{-1}$ frequency envelop is even less resolved, such that applying reasonable constrains become crucial for any quantitative Raman fitting.\n",
    "\n",
    "For starting the fit, as we suppose we have a not bad knowledge of peak frequencies (see the discussion right above), a good thing to do is to fix for the first fit the frequencies of the peaks:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [],
   "source": [
    "# we constrain the positions\n",
    "params['f1'].vary = False\n",
    "params['f2'].vary = False\n",
    "params['f3'].vary = False\n",
    "params['f4'].vary = False\n",
    "params['f5'].vary = False"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "This avoids any divergence of the fitting procedure regarding the hald-width, because with free frequencies and badly estimated half-width and intensities, the fitting procedure always tends to extremely broaden the peaks and put them at similar frequencies, with strong overlapping. Starting the fitting procedure by fixing the parameter we know the best, i.e. the frequencies, avoid such complications.\n",
    "\n",
    "Then, we need to use a large-scale algorithm quite robust for fitting. The levenberg-marquart algorithm fails on such fitting problem in my experience. Let's choose the Nelder and Mead algorithm for this example: (http://comjnl.oxfordjournals.org/content/7/4/308.short) :"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {},
   "outputs": [],
   "source": [
    "algo = 'nelder'  \n",
    "    \n",
    "result = lmfit.minimize(residual, params, method = algo, args=(x_fit, y_fit[:,0])) # fit data with  nelder model from scipy"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "And now we release the frequencies:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {},
   "outputs": [],
   "source": [
    "# we release the positions but contrain the FWMH and amplitude of all peaks \n",
    "params['f1'].vary = True\n",
    "params['f2'].vary = True\n",
    "params['f3'].vary = True\n",
    "params['f4'].vary = True\n",
    "params['f5'].vary = True\n",
    "\n",
    "#we fit twice\n",
    "result2 = lmfit.minimize(residual, params,method = algo, args=(x_fit, y_fit[:,0])) # fit data with leastsq model from scipy"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We can now extract the various things generated by lmfit as well as the peaks:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {},
   "outputs": [],
   "source": [
    "model = lmfit.fit_report(result2.params)\n",
    "yout, peak1,peak2,peak3,peak4,peak5 = residual(result2.params,x_fit) # the different peaks\n",
    "rchi2 = (1/(float(len(y_fit))-15-1))*np.sum((y_fit - yout)**2/sigma**2) # calculation of the reduced chi-square    "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "And let's have a look at the fitted spectrum:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "rchi-2 = \n",
      "1902294804.6148744\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1159cf438>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "##### WE DO A NICE FIGURE THAT CAN BE IMPROVED FOR PUBLICATION\n",
    "plt.plot(x_fit,y_fit,'k-')\n",
    "plt.plot(x_fit,yout,'r-')\n",
    "plt.plot(x_fit,peak1,'b-')\n",
    "plt.plot(x_fit,peak2,'b-')\n",
    "plt.plot(x_fit,peak3,'b-')\n",
    "plt.plot(x_fit,peak4,'b-')\n",
    "plt.plot(x_fit,peak5,'b-')\n",
    "    \n",
    "plt.xlim(lb,hb)\n",
    "plt.ylim(-0.5,10.5)\n",
    "plt.xlabel(\"Raman shift, cm$^{-1}$\", fontsize = 14)\n",
    "plt.ylabel(\"Normalized intensity, a. u.\", fontsize = 14)\n",
    "plt.title(\"Fig. 3: Fit of the Si-O stretch vibrations\\n in LS4 with \\nthe Nelder Mead algorithm \",fontsize = 14,fontweight = \"bold\")\n",
    "print(\"rchi-2 = \\n\"+str(rchi2))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Ok, we can test to change the algorithm and use the Levenberg-Marquart one which is well-used for simple problems by a lot of people. We will re-initialize the Params() object and run the entire code written above again."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "rchi-2 = \n",
      "1899541269.9694881\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1159cfeb8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "algo = 'leastsq' # We will use the Levenberg-Marquart algorithm  \n",
    "#               (Name,  Value,  Vary,   Min,  Max,  Expr) Here I directly initialize with fixed frequencies\n",
    "params.add_many(('a1',   2.4,   True,  0,      None,  None),\n",
    "                ('f1',   946,   True, 910,    970,  None),\n",
    "                ('l1',   26,   True,  20,      50,  None),\n",
    "                ('a2',   3.5,   True,  0,      None,  None),\n",
    "                ('f2',   1026,  True, 990,   1070,  None),\n",
    "                ('l2',   39,   True,  20,   55,  None),  \n",
    "                ('a3',   8.5,    True,    7,      None,  None),\n",
    "                ('f3',   1082,  True, 1070,   1110,  None),\n",
    "                ('l3',   31,   True,  25,   35,  None),  \n",
    "                ('a4',   2.2,   True,  0,      None,  None),\n",
    "                ('f4',   1140,  True, 1110,    1160,  None),\n",
    "                ('l4',   35,   True,  20,   50,  None),  \n",
    "                ('a5',   2.,   True,  0,      None,  None),\n",
    "                ('f5',   1211,  True, 1180,   1220,  None),\n",
    "                ('l5',   28,   True,  20,   45,  None))\n",
    "\n",
    "result = lmfit.minimize(residual, params, method = algo, args=(x_fit, y_fit[:,0]))\n",
    "# we release the positions but contrain the FWMH and amplitude of all peaks \n",
    "params['f1'].vary = True\n",
    "params['f2'].vary = True\n",
    "params['f3'].vary = True\n",
    "params['f4'].vary = True\n",
    "params['f5'].vary = True\n",
    "\n",
    "result2 = lmfit.minimize(residual, params,method = algo, args=(x_fit, y_fit[:,0]))\n",
    "model = lmfit.fit_report(result2.params) # the report \n",
    "yout, peak1,peak2,peak3,peak4,peak5 = residual(result2.params,x_fit) # the different peaks\n",
    "rchi2 = (1/(float(len(y_fit))-15-1))*np.sum((y_fit - yout)**2/sigma**2) # calculation of the reduced chi-square \n",
    "\n",
    "##### WE DO A NICE FIGURE THAT CAN BE IMPROVED FOR PUBLICATION\n",
    "plt.plot(x_fit,y_fit,'k-')\n",
    "plt.plot(x_fit,yout,'r-')\n",
    "plt.plot(x_fit,peak1,'b-')\n",
    "plt.plot(x_fit,peak2,'b-')\n",
    "plt.plot(x_fit,peak3,'b-')\n",
    "plt.plot(x_fit,peak4,'b-')\n",
    "plt.plot(x_fit,peak5,'b-')\n",
    "    \n",
    "plt.xlim(lb,hb)\n",
    "plt.ylim(-0.5,10.5)\n",
    "plt.xlabel(\"Raman shift, cm$^{-1}$\", fontsize = 14)\n",
    "plt.ylabel(\"Normalized intensity, a. u.\", fontsize = 14)\n",
    "plt.title(\"Fig. 4: Fit of the Si-O stretch vibrations\\n in LS4 with \\nthe Levenberg-Marquardt (LM) algorithm\",fontsize = 14,fontweight = \"bold\")\n",
    "print(\"rchi-2 = \\n\"+str(rchi2))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The comparison of Fig. 3 and 4 shows small differences. In this case, and because we have a good error model, the LM algorithm converges toward results similar to those of the Nelder-Mead algorithm. You can try to run again the calculation with removing the \"sigma\" input in the \"minimize\" function used above. You will see that the results will diverge much more than in this case. \n",
    "\n",
    "A convenient thing about the LM algorithm is that it allows to estimate the errors on the fitting parameters. This is not possible with gradient-less algorithms such as the Nelder-Mear or the Powell algorithms. For the latters, I will give a piece of code at the end of this notebook that allows to estimate good errors on parameters through bootrapping. \n",
    "\n",
    "The downside of the LM algorithm is that, in my experience, it fails if the envelop of bands to fit is broader than the one used in this example, because it seachs at all costs to fit the spectrum as good as possible... This typically results in extrem broadening and overlapping of the peaks you try to fit.\n",
    "\n",
    "A way to resolve this issue if the use of the LM algorithm is really needed is to put tigther constrains on the peak half-widths.\n",
    "\n",
    "But another way is to use a more global algorithm less prone to diverge from the initial estimations. The Nelder-Mead, Powell (Powell, 1964, Computer Journal 7 (2): 155-62) or the COBYLA (see Powell, 2007 Cambridge University Technical Report DAMTP 2007) algorithms can give good results for complex problems. Also, the Conjugate Gradient algorithm may be suitable (Wright & Nocedal, “Numerical Optimization”, 1999, pp. 120-122). Let's try the latter for now:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "rchi-2 = \n",
      "1899541266.9214773\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x115ad2588>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "algo = 'cg' # We will use the Conjugate Gradient algorithm  \n",
    "#               (Name,  Value,  Vary,   Min,  Max,  Expr) Here I directly initialize with fixed frequencies\n",
    "params.add_many(('a1',   2.4,   True,  0,      None,  None),\n",
    "                ('f1',   946,   True, 910,    970,  None),\n",
    "                ('l1',   26,   True,  20,      50,  None),\n",
    "                ('a2',   3.5,   True,  0,      None,  None),\n",
    "                ('f2',   1026,  True, 990,   1070,  None),\n",
    "                ('l2',   39,   True,  20,   55,  None),  \n",
    "                ('a3',   8.5,    True,    7,      None,  None),\n",
    "                ('f3',   1082,  True, 1070,   1110,  None),\n",
    "                ('l3',   31,   True,  25,   35,  None),  \n",
    "                ('a4',   2.2,   True,  0,      None,  None),\n",
    "                ('f4',   1140,  True, 1110,    1160,  None),\n",
    "                ('l4',   35,   True,  20,   50,  None),  \n",
    "                ('a5',   2.,   True,  0,      None,  None),\n",
    "                ('f5',   1211,  True, 1180,   1220,  None),\n",
    "                ('l5',   28,   True,  20,   45,  None))\n",
    "\n",
    "result = lmfit.minimize(residual, params, method = algo, args=(x_fit, y_fit[:,0]))\n",
    "# we release the positions but contrain the FWMH and amplitude of all peaks \n",
    "params['f1'].vary = True\n",
    "params['f2'].vary = True\n",
    "params['f3'].vary = True\n",
    "params['f4'].vary = True\n",
    "params['f5'].vary = True\n",
    "\n",
    "result2 = lmfit.minimize(residual, params,method = algo, args=(x_fit, y_fit[:,0]))\n",
    "model = lmfit.fit_report(result2.params) # the report \n",
    "yout, peak1,peak2,peak3,peak4,peak5 = residual(result2.params,x_fit) # the different peaks\n",
    "rchi2 = (1/(float(len(y_fit))-15-1))*np.sum((y_fit - yout)**2/sigma**2) # calculation of the reduced chi-square \n",
    "\n",
    "##### WE DO A NICE FIGURE THAT CAN BE IMPROVED FOR PUBLICATION\n",
    "plt.plot(x_fit,y_fit,'k-')\n",
    "plt.plot(x_fit,yout,'r-')\n",
    "plt.plot(x_fit,peak1,'b-')\n",
    "plt.plot(x_fit,peak2,'b-')\n",
    "plt.plot(x_fit,peak3,'b-')\n",
    "plt.plot(x_fit,peak4,'b-')\n",
    "plt.plot(x_fit,peak5,'b-')\n",
    "    \n",
    "plt.xlim(lb,hb)\n",
    "plt.ylim(-0.5,10.5)\n",
    "plt.xlabel(\"Raman shift, cm$^{-1}$\", fontsize = 14)\n",
    "plt.ylabel(\"Normalized intensity, a. u.\", fontsize = 14)\n",
    "plt.title(\"Fig. 5: Fit of the Si-O stretch vibrations\\n in LS4 with \\nthe Conjugate Gradient (CG) algorithm\",fontsize = 14,fontweight = \"bold\")\n",
    "print(\"rchi-2 = \\n\"+str(rchi2))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The CG algorithm returns a result close to the Nelder-Mead and the LM algorithms. A bad thing about the CG algorithm is that it is extremely slow in the Scipy implementation... It is (nearly) acceptable for one fit, but for bootstrapping 100 spectra, it is not a good option at all.\n",
    "\n",
    "As a last one, we can see what the results look like with the Powell algorithm:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "rchi-2 = \n",
      "1899430806.9992263\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x115c29c88>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "algo = 'powell' # We will use the Powell algorithm  \n",
    "#               (Name,  Value,  Vary,   Min,  Max,  Expr) Here I directly initialize with fixed frequencies\n",
    "params.add_many(('a1',   2.4,   True,  0,      None,  None),\n",
    "                ('f1',   946,   True, 910,    970,  None),\n",
    "                ('l1',   26,   True,  20,      50,  None),\n",
    "                ('a2',   3.5,   True,  0,      None,  None),\n",
    "                ('f2',   1026,  True, 990,   1070,  None),\n",
    "                ('l2',   39,   True,  20,   55,  None),  \n",
    "                ('a3',   8.5,    True,    7,      None,  None),\n",
    "                ('f3',   1082,  True, 1070,   1110,  None),\n",
    "                ('l3',   31,   True,  25,   35,  None),  \n",
    "                ('a4',   2.2,   True,  0,      None,  None),\n",
    "                ('f4',   1140,  True, 1110,    1160,  None),\n",
    "                ('l4',   35,   True,  20,   50,  None),  \n",
    "                ('a5',   2.,   True,  0,      None,  None),\n",
    "                ('f5',   1211,  True, 1180,   1220,  None),\n",
    "                ('l5',   28,   True,  20,   45,  None))\n",
    "\n",
    "result = lmfit.minimize(residual, params, method = algo, args=(x_fit, y_fit[:,0]))\n",
    "# we release the positions but contrain the FWMH and amplitude of all peaks \n",
    "params['f1'].vary = True\n",
    "params['f2'].vary = True\n",
    "params['f3'].vary = True\n",
    "params['f4'].vary = True\n",
    "params['f5'].vary = True\n",
    "\n",
    "result2 = lmfit.minimize(residual, params,method = algo, args=(x_fit, y_fit[:,0]))\n",
    "model = lmfit.fit_report(result2.params) # the report \n",
    "yout, peak1,peak2,peak3,peak4,peak5 = residual(result2.params,x_fit) # the different peaks\n",
    "rchi2 = (1/(float(len(y_fit))-15-1))*np.sum((y_fit - yout)**2/sigma**2) # calculation of the reduced chi-square \n",
    "\n",
    "##### WE DO A NICE FIGURE THAT CAN BE IMPROVED FOR PUBLICATION\n",
    "plt.plot(x_fit,y_fit,'k-')\n",
    "plt.plot(x_fit,yout,'r-')\n",
    "plt.plot(x_fit,peak1,'b-')\n",
    "plt.plot(x_fit,peak2,'b-')\n",
    "plt.plot(x_fit,peak3,'b-')\n",
    "plt.plot(x_fit,peak4,'b-')\n",
    "plt.plot(x_fit,peak5,'b-')\n",
    "    \n",
    "plt.xlim(lb,hb)\n",
    "plt.ylim(-0.5,10.5)\n",
    "plt.xlabel(\"Raman shift, cm$^{-1}$\", fontsize = 14)\n",
    "plt.ylabel(\"Normalized intensity, a. u.\", fontsize = 14)\n",
    "plt.title(\"Fig. 6: Fit of the Si-O stretch vibrations\\n in LS4 with \\nthe Powell algorithm\",fontsize = 14,fontweight = \"bold\")\n",
    "print(\"rchi-2 = \\n\"+str(rchi2))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "You see in Fig. 6 that the results are, again, close to those of the other algorithms, at the exception of the two last peaks. The intensity and the frequency of the peak near 1200 cm$^{-1}$ is higher in this fit than in the others.\n",
    "\n",
    "So one important thing that has to be remembered is that, with the same parameter inputs, you will obtain different results with using different fitting algorithms. The above results are close because the fitting example is quite simple. Actually, all the results given above seem reasonable. The experience with other spectra from other silicate and aluminosilicate glasses is that the Nelder-Mead and Powell algorithms will provide the most robust ways to fit the spectra.\n",
    "\n",
    "# Error estimations\n",
    "\n",
    "Errors can be estimated with using the \"confidence\" function if you used the Levenberg-Marquardt algorithm. See the examples here: http://lmfit.github.io/lmfit-py/confidence.html .\n",
    "\n",
    "If you use a large-scale gradient-less algorithm such as the Nelder-Mead or the Powell algorithms, you cannot do that. Thus, to calculate the errors on the parameters that those algorithms provide as well as the error introduced by choosing one or the other algorithm, we can use the bootstrapping technic. Several descriptions on the internet are available for this technic, so I will skip a complete description here.\n",
    "\n",
    "A quick overview is to say that we have datapoints Yi affected by errors e_Yi. We assume that the probability density function of the Yi points is Gaussian. According to the Central Theorem Limit, this probably is a good assumption. Therefore, for each frequency in the spectrum of Fig.1, we have points that are probably at an intensity of Yi but with an error of e_Yi. To estimate how this uncertainties affect our fitting results, we can pick new points in the Gaussian distribution of mean Yi with a standard deviation e_Yi, and construct whole new spectra that we will fit. We will repeat this procedure N times.\n",
    "\n",
    "In addition to that, we can also randomly choose between the Nelder-Mead or the Powell algorithm during the new fits, such that we will take also into account our arbitrary choice in the fitting algorithm for calculating the errors on the estimated parameters.\n",
    "\n",
    "A last thing would be to randomly change a little bit the initial values of the parameters, but this is harder to implement so we will not do it for this example.\n",
    "\n",
    "First of all, we have to write a Python function that will randomly sample the probability density functions of the points of the spectrum of Fig. 1. Here is the piece of code I wrote for doing so:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "metadata": {},
   "outputs": [],
   "source": [
    "#### Bootstrap function\n",
    "def bootstrap(data, ese,nbsample):\n",
    "    # Bootstrap of Raman spectra. We generate new datapoints with the basis of existing data and their standard deviation\n",
    "    N = len(data)\n",
    "    bootsamples = np.zeros((N,nbsample))\n",
    "    \n",
    "    for i in range(nbsample):\n",
    "        for j in range(N):\n",
    "            bootsamples[j,i] = np.random.normal(data[j], ese[j], size=None)\n",
    "    return bootsamples"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now we will define how much new spectra we want to generate (the nbsample option of the bootstrap function), and we will run the previous function."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "CPU times: user 55 ms, sys: 6.34 ms, total: 61.4 ms\n",
      "Wall time: 55.9 ms\n"
     ]
    }
   ],
   "source": [
    "%%time\n",
    "nboot = 10 # Number of bootstrap samples, I set it to a low value for the example but usually you want thousands there\n",
    "data_resampled = bootstrap(y_fit[:,0],sigma,nboot)# resampling of data + generate the output parameter tensor"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now, we will create a loop which is going to look at each spectrum in the data_resampled variable, and to fit them with the procedure already described.\n",
    "\n",
    "For doing so, we need to declare a couple of variables to record the bootstrap mean fitting error, in order to see if we generated enought samples to obtain a statistically representative bootstrapping process, and to record each set of parameters obtained for each bootstrapped spectrum."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "metadata": {},
   "outputs": [],
   "source": [
    "para_output = np.zeros((5,3,nboot)) # 5 x 3 parameters x N boot samples\n",
    "bootrecord = np.zeros((nboot)) # For recording boot strap efficiency\n",
    "        \n",
    "for nn in range(nboot):\n",
    "    algos = ['powell','nelder']\n",
    "    algo = random.choice(algos) # We randomly select between the Powell or Nelder_mear algorithm\n",
    "    params = lmfit.Parameters()\n",
    "    #               (Name,  Value,  Vary,   Min,  Max,  Expr) Here I directly initialize with fixed frequencies\n",
    "    params.add_many(('a1',   24,   True,  0,      None,  None),\n",
    "                ('f1',   946,   True, 910,    970,  None),\n",
    "                ('l1',   26,   True,  20,      50,  None),\n",
    "                ('a2',   35,   True,  0,      None,  None),\n",
    "                ('f2',   1026,  True, 990,   1070,  None),\n",
    "                ('l2',   39,   True,  20,   55,  None),  \n",
    "                ('a3',   85,    True,    70,      None,  None),\n",
    "                ('f3',   1082,  True, 1070,   1110,  None),\n",
    "                ('l3',   31,   True,  25,   35,  None),  \n",
    "                ('a4',   22,   True,  0,      None,  None),\n",
    "                ('f4',   1140,  True, 1110,    1160,  None),\n",
    "                ('l4',   35,   True,  20,   50,  None),  \n",
    "                ('a5',   4,   True,  0,      None,  None),\n",
    "                ('f5',   1211,  True, 1180,   1220,  None),\n",
    "                ('l5',   28,   True,  20,   45,  None))\n",
    "\n",
    "    result = lmfit.minimize(residual, params, method = algo, args=(x_fit, data_resampled[:,nn],sigma))\n",
    "    # we release the positions but contrain the FWMH and amplitude of all peaks \n",
    "    params['f1'].vary = True\n",
    "    params['f2'].vary = True\n",
    "    params['f3'].vary = True\n",
    "    params['f4'].vary = True\n",
    "    params['f5'].vary = True\n",
    "\n",
    "    result2 = lmfit.minimize(residual, params,method = algo, args=(x_fit, data_resampled[:,nn], sigma))\n",
    "                           \n",
    "    vv = result2.params.valuesdict()\n",
    "    para_output[0,0,nn] = vv['a1']\n",
    "    para_output[1,0,nn] = vv['a2']\n",
    "    para_output[2,0,nn] = vv['a3']\n",
    "    para_output[3,0,nn] = vv['a4']\n",
    "    para_output[4,0,nn] = vv['a5']\n",
    "            \n",
    "    para_output[0,1,nn] = vv['f1']\n",
    "    para_output[1,1,nn] = vv['f2']\n",
    "    para_output[2,1,nn] = vv['f3']\n",
    "    para_output[3,1,nn] = vv['f4']\n",
    "    para_output[4,1,nn] = vv['f5']\n",
    "            \n",
    "    para_output[0,2,nn] = vv['l1']\n",
    "    para_output[1,2,nn] = vv['l2']\n",
    "    para_output[2,2,nn] = vv['l3']\n",
    "    para_output[3,2,nn] = vv['l4']\n",
    "    para_output[4,2,nn] = vv['l5']\n",
    "                \n",
    "para_mean = np.mean(para_output,axis=2)\n",
    "para_ese = np.std(para_output,axis=2)\n",
    "for kjy in range(nboot):\n",
    "    if kjy == 0:\n",
    "        bootrecord[kjy] = 0\n",
    "    else:\n",
    "        bootrecord[kjy] = np.sum(np.std(para_output[:,:,0:kjy],axis=2))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We can have a view at the mean values and standard deviation of the parameters that have been generated by the bootstrapping:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[   2.82205258,  955.73275   ,   30.39368724],\n",
       "       [   1.65265553, 1017.71870454,   31.08505756],\n",
       "       [  70.        , 1079.97199872,   25.00001085],\n",
       "       [   1.30054619, 1146.49451719,   25.8453334 ],\n",
       "       [   1.20474251, 1194.1782622 ,   30.2684197 ]])"
      ]
     },
     "execution_count": 57,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "para_mean"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[1.69634958e-01, 8.73024855e+00, 4.10794334e+00],\n",
       "       [1.34971825e+00, 1.99986723e+01, 1.38176203e+01],\n",
       "       [3.04885118e-09, 1.71549948e-02, 2.40036705e-05],\n",
       "       [1.06189409e+00, 2.02626303e+01, 7.16167664e+00],\n",
       "       [5.00393334e-01, 1.08766556e+01, 5.91843674e-01]])"
      ]
     },
     "execution_count": 58,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "para_ese"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Those errors are probably the best estimates of the errors that affect your fitting parameters. You can add another bootstrapping function for changing of, saying, 5 percents the initial estimations of the parameters, and you will have a complete and coherent estimation of the errors affecting the fits. But for most cases, the errors generated by this above bootstrapping technic are already quite robust.\n",
    "\n",
    "We can see if we generated enought samples to have valid bootstrap results by looking at how the mean value of the parameters and their error converge. To do a short version of such thing, we can also look at how the summation of the errors of the parameters change with the iteration number. If the summation of errors becomes constant, we can say that we have generated enought bootstrap samples to have a significant result, statistically speaking."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0.5,1,'Fig. 7: Bootstrap iterations for convergence')"
      ]
     },
     "execution_count": 59,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x115c4c5f8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(np.arange(nboot)+1,bootrecord,'ko')\n",
    "plt.xlim(0,nboot+1)\n",
    "plt.xlabel(\"Number of iterations\",fontsize = 14)\n",
    "plt.ylabel(\"Summed errors of parameters\",fontsize = 14)\n",
    "plt.title(\"Fig. 7: Bootstrap iterations for convergence\",fontsize = 14, fontweight = 'bold')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We see from the above figure that the algorithm seems to have converged after 70 iterations. Therefore, we need to generate at least 70 spectra with the bootstrap function to obtain a good estimate of the errors that affect the parameters.\n",
    "\n",
    "# Conclusion\n",
    "This IPython notebook showed how spectra can be corrected from any baseline, how it is possible to use lmfit to fit it with Gaussian peaks, how changing the optimisation algorithm can change the results, and how we can estimate the errors on the calculated parameters with using the bootstrapping technic.\n",
    "\n",
    "Several peak models are defined in the Rampy toolbox, or directly in lmfit. You can look at the relevant instructions for both software to use other peak models in the above calculation. Results can be saved in textfiles, through using the Python output functions like np.savetxt or other ways. See the relevant python documentation for doing so. Any comments on this program will be welcome."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
